(1) Field
The present invention relates generally to a system for distributing compiling tasks over several computers connected via a local area or wide area network. More particularly, the present invention relates to distributing compiling tasks to a number of networked sub-contractor computers, each networked sub-contractor computer publishing its capability and availability to a network resource scheduler computer which receives the compiling tasks from a client computer. The networking resource scheduler computer matches the compiling tasks to an appropriate sub-contractor computer.
(2) General Background
In recent years, wide area networks (xe2x80x9cWANxe2x80x9d) have become an important part of the day to day lives of many computer owners. Every day millions of users connect to the most well known WAN, the Internet. Nearly every personal computer (xe2x80x9cPCxe2x80x9d) user having a modem and a telephone line can access the Internet for minimal cost through commercial companies that provide a gateway to the Internet. Available Internet services include E-Mail, database access, and news groups. The Internet also acts as a service medium for many companies trying to market products.
Many of the personal computers which are connected to WANs are high powered personal computers which may contain microprocessors, such as the Intel Pentium(copyright) or Pentium(copyright)Pro microprocessor. These personal computers may also include RAM memory, a display unit, long-term storage such as a hard disk drive, and other proprietary processors such as video graphic cards and math co-processors. These independent, stand-alone computers are idle for a significant portion of the day. For example, a personal computer owned at home may be idle or even off while the owner is away at work. The computer may also be idle at night while the owner is asleep. A personal computer at the office may only be utilized from 9 A.M. in the morning till 5 P.M. in the evening. At any particular time, peak usage in one part of the world can be offset by low usage in a different part of the world. For example, periods of high computer usage in New York City may be night time in Tokyo when idle personal computers are readily available. It would be advantageous to utilize the wasted idle time of these computers. More generally, a method of using an entire network of computers as one massive parallel computing machine to solve particular tasks is desirable.
One particular task that is particularly suitable for such parallel distributed computing are compiling tasks. Such compiling tasks are typically made up hundreds of little components which have no dependency on one another during compile time. For example, in some compiling systems, a computer assembles hundreds of components over extended periods of time. By distributing the task over many computers, the component building could be completed much quicker, saving months from a project""s life cycle.
A system which uses PCs coupled to an Internet service provider (xe2x80x9cISPxe2x80x9d) to satisfy compiling tasks is ideally dynamic and easily modifiable. Each computer connecting to the ISP may be independently owned and individual owners may frequently change their personal computer system characteristics. Furthermore, new subscribers are frequently being added to the ISP network, while other owners are dropping the ISP service. Major ISPs have a xe2x80x9cchurnxe2x80x9d rate of thousands of computers adding and dropping the service every year.
Thus, it is desirable to have a dynamic, accommodating system capable of operating a network of computers on a wide area network as one massive parallel computing machine to handle complicated tasks such as compiling.
A method of compiling is described. A system for compiling receives a plurality of modules, each module in the plurality of modules representing a portion of a compiling task. The system chooses a plurality of corresponding subcontracting computers to process the plurality of modules based on job-shops generated by the corresponding sub-contracting computers. The system transmits each module as a job to a corresponding sub-contracting computer and combines the output of the sub-contracting computers to generate a compiled task.